<?php

class myUser extends sfGuardSecurityUser
{

  public function cargarValores($log_zona)
  {
    $this->clearAllAttribute();
    $this->setAttribute('loged', true);
    $this->setAttribute('log_id', $log_zona->getLogId());
    $this->setAttribute('time', $log_zona->getLogFecha());
    $this->setAttribute('person_id', $log_zona->getLogPersId());

  }

  /**
   * Chequea que el tiempo de session no sea mayot a  15 minutos
   */
  public function chequearTimeOut()
  {
    if ($this->getAttribute('time') > date('"Y-m-d H:i:s"', strtotime('+ 15 minutes', strtotime($this->getAttribute('time')))))
    {
      OL_LogPeer::retrieveByPK($this->getAttribute('log_id'))->setActivo(false);
    }

  }

  public function chequearLogOut()
  {
    ##recuperarlo por el request

    if (!OL_LogPeer::retrieveByPK($this->getAttribute('log_id'))->getActivo())
    {
      $this->clearAllAttribute();


      return false;
    }
    return true;

  }

  public function estoyLogeado($request)
  {

    if (!$this->hasAttribute('loged'))
    {

      $log_zona = Ol_LogPeer::doSelectUser($request->getParameter('idPersonas'), $request->getParameter('idSession'));
      if ($log_zona)
      {
        ##carga los valores de la sessio para tener una persona
        $this->cargarValores($log_zona);
        return true;
      }
      else
      {
        #No posee un log de zona interactiva que le permita navegar
        #var_dump('No posee el log de  logeado y no recupera ningun log en la base', $request->getParameter('idPersonas'), $request->getParameter('idSession'),$log_zona);die();
        return false;
      }
    }
    else
    {
      return $this->chequearLogOut();
      #$this->chequearTimeOut();
      #return $this->hasAttribute('loged');
    }

  }

  public function clearAllAttribute()
  {
    $this->clearAttribute('loged');
    $this->clearAttribute('time');
    $this->clearAttribute('log_id');

  }

  public function clearAttribute($name)
  {
    $this->attributeHolder->remove($name);

  }

  public function getIdPersona()
  {
    return $this->getIdPersonaUcalp();

  }

  public function getIdPersonaUcalp()
  {
    if ($this->hasAttribute('loged'))
    {
      return $this->getAttribute('person_id');
    }

    return null;

  }

  public function getPersonSucursalId()
  {
    $persona = BbPersonaPeer::retrieveUcalpPersona($this->getIdPersonaUcalp());
    $unidad_academica = $persona->getBbUnidadAcademica();
    return $unidad_academica ? $unidad_academica->getId() : null;

  }

}
